package com.dog.basics.common.photooss.service;

import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.List;

/**
 * @program: business
 * @description: 图片上传公共
 * @author: Guo
 * @create: 2020-02-06 15:34
 **/
public interface PhotoOssUtil {

	/**
	 * @功能描述: byte文件流上传
	 * @author He
	 * @date 2020/3/1 18:46
	 * @Param: [read, bucketName, storagePath, prefix]
	 * @Return: java.lang.String
	 */
	String uploadFile(byte[] read, String bucketName, String storagePath, String prefix);

	/**
	 * @功能描述: 根据文件 inputstream 上传图片
	 * @author He
	 * @date 2020/2/29 19:45
	 * @Param: [inputStream, bucketName, storagePath, prefix]
	 * @Return: java.lang.String
	 */
	String uploadFile(InputStream inputStream, String bucketName, String storagePath, String prefix);

	/**
	 * 上传文件
	 *
	 * @param files
	 * @param bucketName
	 * @param storagePath
	 * @return
	 * guonh 2020年2月6日
	 */
	 List<String> uploadFile(MultipartFile[] files, String bucketName, String storagePath, String prefix);

	/**
	 * 上传文件
	 *
	 * @param file
	 * @param bucketName
	 * @param storagePath
	 * @return
	 * guonh 2020年2月6日
	 */
	String uploadFile(MultipartFile file, String bucketName, String storagePath, String prefix);

	/**
	 * 删除文件
	 *
	 * @param fileName
	 * @param bucketName
	 * guonh 2020年2月6日
	 */
	 void deleteFile(String fileName, String bucketName);

	/**
	 * 根据图片全路径删除就图片
	 *
	 * @param imgUrl     图片全路径
	 * @param bucketName 存储路径
	 * guonh 2020年2月6日
	 */
	void delImg(String imgUrl, String bucketName);

	/**
	 * 判断文件是否存在
	 *
	 * @param fileName   文件名称
	 * @param bucketName 文件储存空间名称
	 * @return true:存在,false:不存在
	 * guonh 2020年2月6日
	 */
	boolean doesObjectExist(String fileName, String bucketName) ;

	/**
	 * 复制文件
	 *
	 * @param fileName              源文件名称
	 * @param bucketName            源储存空间名称
	 * @param destinationBucketName 目标储存空间名称
	 * @param destinationObjectName 目标文件名称
	 *  guonh 2020年2月6日
	 */
	void ossCopyObject(String fileName, String bucketName, String destinationBucketName, String destinationObjectName);

}
